package com.jl.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jl.commons.result.PageDataInfo;
import com.jl.model.User;
import com.jl.model.in.LoginUser;
import com.jl.model.in.UserGrade;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用信息户表 服务类
 * </p>
 *
 * @author JiangJian
 * @since 2019-03-06
 */
public interface IUserService extends IService<User> {

    /**
     * 分页查询用户信息
     * @param pageDataInfo 分页配置信息
     * @param qw 筛选条件
     * @return
     */
    void selectUserDataGrid(PageDataInfo<Map<String,Object>> pageDataInfo, QueryWrapper<User> qw);

    /**
     * 分页查询用户信息
     * @param pageDataInfo 分页配置信息
     * @return
     */
    void getAllUserGrade(PageDataInfo<UserGrade> pageDataInfo, String month, Long userId);

    /**
     * 分页查询用户信息
     * @param pageDataInfo 分页配置信息
     * @return
     */
    void getUserGradeById(PageDataInfo<Map<String,Object>> pageDataInfo,Long userId);

    /**
     * 批量删除用户信息
     * 同时删除user_role中的数据
     * @param ids
     * @return
     */
    boolean deleteUserByIds(List<Long> ids);

    /**
     * 通过用户名获取角色
     * @param username
     * @return
     */
    User selectUserByAccount(String username);


    boolean isLoginNameCanUse(String loginName, Long id);

    /**
     *
     * @param loginName 用户名
     * @return 用户名是否已经被使用
     */
    boolean isLoginNameUsed(String loginName);


    /**
     * 保存用户信息 和 角色
     * @param user 用户信息
     * @param roleId 角色id
     * @return
     */
    boolean saveUser(User user,Long roleId);

    /**
     * 编辑用户信息 和 角色
     * @param user 用户信息
     * @param roleId 角色id
     * @return
     */
    boolean updateUserById(User user,Long roleId);

}
